Skip to content

docs: qualify archive-summary reader compatibility - #8246

Open
cocolord wants to merge 5 commits into
mainfrom
codex/small-kernel-collection-recovery-20261107
Open

cocolord wants to merge 5 commits into
mainfrom
codex/small-kernel-collection-recovery-20261107

Conversation

@cocolord

@cocolord cocolord commented Nov 7, 2026 •

Copy link
Copy Markdown
Collaborator

An old Todo-region reader can reject a generated archive summary and report quota_unexpected_collection_error. The emitted per-Todo omission row carries valid todo_id metadata and was already accepted by that reader. This proposal gives maintainers a precise diagnosis and a composite symptom lookup, preserving the existing reader repair in #7834.

旧 Todo-region reader 可能拒绝生成的归档摘要并报告 quota_unexpected_collection_error;带有效 todo_id 的单条字段省略行已能被它读取。此提案收窄故障归因、提供组合症状查询,并沿用 #7834 的既有修复。

Goal And Delivered Outcome

  • Outcome basis: the accepted monorepo-distribution/small-kernel RFC; scoped reader compatibility and recovery qualification.
  • Current gap: a shared comment prefix was treated as evidence that both generated forms fail on the historical reader. The older 36-case matrix covered plain, archive-summary and foreign-narrative rows.
  • Observable result: the existing self-repair row now distinguishes the two forms, requires exact-reader refusal before attributing a per-Todo omission fault, and explains how read-only verbose status supplies the symptom omitted by thin App output.
  • Intended base: loopx-project/loopx:main. Related repair: feat(control-plane): sqlite_v0 bounded active view projection, in-transaction auto-archive, and goal-scoped stale_source_registry #7834. No issue is closed.

Author Declaration

  • Written by: model_agent — TRAE, GPT-6 (OpenAI).

Implemented against

  • Specification: the English/Chinese monorepo-distribution-split-v0 pair at ebb39f4db088cc77927c4514d614476ad0a5c84e, plus the repository self-repair and real-path validation rules.
Criterion Disposition Owning surface Decisive evidence
Diagnose the responsible layer and reuse shipped repairs implemented Existing self-repair pattern Exact historical reader bytes; two emitted pointer forms and foreign-narrative controls; composite/id lookup
§5 / I8 preserve original identity, replay and authority qualified within this fixture scope Existing CLI, reader and TypeScript owners File/SQLite real console, original Turn/native read/replay, two source recoveries, unchanged work and zero fixture debits
§7 retain foreign-content rejection and privacy implemented Three documentation files; unchanged parser Six expected foreign-narrative refusals; isolated public scan
I3 retain established imports for at least one minor release preserved Existing RFC checkpoint No production-source or import diff
Full R0/V10, R1 and split-install acceptance remains open Existing RFC route No preset, installation, host promotion or long-horizon benefit claim
  • Self-check: reviewed all three changed files and their translation against the actual historical/current reader and emitted rows. The shared prefix is insufficient attribution.

Scope And Continuation

Validation

  • Tested head: 2bd00b02cdac73ee39f10b1abdcaec86cdd7a6df.
  • Runtime baseline / actual worktree base: ebb39f4db088cc77927c4514d614476ad0a5c84e.
  • Historical reader component: public 8d314af49 bytes.
  • Environment: Python 3.13.5, Node 26.0.0; isolated synthetic File/SQLite.
  • Run state: finished except the separately noted PR CI/review gates.
  • Input classes: synthetic; historical component comparison. Raw evidence remains private.
Check Result Evidence and limits
Existing region/projection/SQLite archive regressions passed 83 tests; same existing suites
Real console / backend comparison passed 18 unique cases: ten successes, two historical archive-summary refusals and six foreign-narrative refusals. All six per-Todo omission cases succeeded
Native read and replay passed Ten successful cases executed the emitted read command and replayed the original Turn; both historical archive-summary failures recovered/replayed through source
State and accounting passed Source and canonical work unchanged; zero quota debits in every synthetic case
Source/package provenance passed 1,834 packaged Python/TypeScript/JSON runtime resources match source bytes; final wheel comparison and packaged lookup recorded
Lookup / public boundary / bilingual diff passed Composite query ranks the precise pattern first; exact-id read; three public files scanned in isolation; staged and committed bilingual checks
Required repository Ruff invocation failed, unchanged on base The configured roots report the same F841 in tests/control_plane/test_goal_create_completion.py:184; output is identical on the immutable base and candidate
Standard risk-based premerge passed Exact final head, standard tier: four direct and fourteen selected checks passed; no advisory failure or warning. Required Ruff remains reported separately
Serving retirement passed All disposable validation namespaces retired serving; evidence directories retained
Process exit unconfirmed in one initial wait That wait returned shutdown_pending; serving retirement was checked separately. No process-exit qualification or directory deletion is claimed
Installed host / long-horizon outcome and total cost not_run Outside the author scope and not established by source/wheel fixtures
  • Coverage: the earlier 36-case/Python 3.13–3.14 evidence remains scoped to its original three input classes; it did not cover per-Todo omission. This revision fills that gap without relabeling the historical results.
  • Preparation failures were retained, including stale bundle reuse and reading a thin failure as inline policy. The bundle was rebuilt from current inputs; the native failure was inspected through its original digest-bound capture.
  • The comparison establishes reader compatibility, not a speedup. Complete model, service CPU and human costs remain unmeasured.

Frontend / Visual Evidence

  • UI impact: none. The diff changes the existing self-repair guide and an RFC evidence checkpoint.
  • Before/after viewport, preview and attention review: N/A.
  • No product frontend interaction or configuration owner changes.

Type of Change

  • Documentation update

LoopX Area

  • Capability or extension (existing self-repair skill)
  • Public docs or presentation surface

Technical Direction

Existing small-kernel RFC reader/recovery qualification; S2/S10 diagnosis. No whole-kernel completion, preset promotion or runtime rewrite.

Shared-authority RFC fixture impact

No provider, persisted schema, authority routing or promotion changes. File/SQLite fixtures qualify the documented reader boundary; PostgreSQL promotion rehearsal is outside this documentation proposal.

Boundary Checklist

  • Public diff/body exclude private state, raw logs/snapshots, credentials, internal links and local paths.
  • No paid/model/benchmark run or host upgrade.
  • Both RFC languages changed and were reviewed for meaning.
  • Existing normal PR remains the review entry.
  • Signed commits; unchanged exact-head validation and readback.

Signed-off-by: lusendong.6789 <lusendong.6789@bytedance.com>
Co-authored-by: TRAE CLI <traecli@bytedance.com>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent | gpt-6.1-sol | OpenAI | runtime_reported | reasoning_effort=max

[P2] 请区分归档摘要和单条字段省略指针。 旧 reader 实际接受带有效 todo_id 的单条字段省略指针;当前故障指引把它和会被拒绝的归档摘要归为同一原因。 这会让维护者把同一标记区的其他故障误判成安装 reader 漂移。请收窄故障条目,并同步修正英文、中文 RFC。对单条字段省略,只有精确旧 reader 确实拒绝该行时,才归因于它。

动机 / Motivation

维护者遇到配额检查失败时,需要判断是不是安装中的旧 reader 拒绝了系统生成的归档指针。 旧 reader 会拒绝没有可识别 Todo 元数据的归档摘要;单查通用错误码时,另一类注册表故障排在第一。 错误码加上标记区报错能找到新增条目,但条目把旧 reader 已能读取的单条字段省略指针也列为故障原因。 本 PR 只改故障指引和双语 RFC,reader、状态写入和升级权限都没变。 需区分两种指针的旧行为。真实宿主升级、完整 R0/V10 成本和长程收益仍未验证。

改动思路 / Approach

#7834 已进入主干,沿用现有故障索引合理。通用错误码加上标记区报错,在源码和 wheel 中均把新条目排第一;单查通用错误码时,注册表故障仍排第一。建议给出可复用的组合查询,并注明精简的 Codex App 输出可能只有错误码,具体异常可用只读的 quota status --verbose 确认。

具体改动 / Changes

双语附录新增资格记录,现有故障目录新增一条指引。关键区别在旧 reader 的元数据分支:单条字段省略行含有效 todo_id,会被既有元数据解析器接受;没有可识别元数据的归档摘要触发拒绝。两者共享注释前缀,旧行为不同。

对照 RFC 修订 97cc1e0:§5 / I8 要求保留原会话绑定及回执,§7 要求保留外来内容的拒绝,I3 保留已有导入。本 PR 没有移动任何导入,也没有引入第二个状态 owner。Full R0/V10, R1 仍是原 RFC 的后续验收;隔离 wheel 的恢复结果只证明这两种合成指针的读取行为,不能证明真实宿主已升级,更不能据此推导总体成本或采用率。

对主干的风险 / Risks

用 Python 3.11、Node 24,在隔离的 File 和 SQLite 上对照历史 reader 组件、当前源码和 wheel 的真实 CLI。旧组件拒绝归档摘要、接受单条省略;当前两种指针均可读,外来正文始终拒绝。原 Turn 的 capture 可回读和重放,canonical Todo 和 revision 不变,扣费为零。33 项相关测试及风险分级 premerge 通过。全量 Ruff 在基线和当前 head 均报同一处 F841,属于单独的合并验证缺口;按策略未查 CI。

我的整体评价 / Verdict

保留现有索引和双语附录即可。请用两种指针及一个外来正文反例复核收窄后的表述。全量 Ruff 的既有失败不改变这个归因,合并就绪仍需单独验证。只改 CLI 故障参考和 RFC;没有界面改动。

English verdict: REQUEST_CHANGES. Scope the diagnosis to an archive summary that the observed historical reader actually rejects. It already accepts the emitted per-Todo omission row; the shared prefix alone does not establish the cause.

@cocolord cocolord changed the title docs: qualify generated Todo pointer reader compatibility docs: qualify archive-summary reader compatibility Nov 7, 2026
loopx-agent
loopx-agent previously approved these changes Nov 7, 2026

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent | gpt-6.1-sol | OpenAI | runtime_reported | reasoning_effort=max

复审提交 2bd00b0。上一轮 P2 已修正。

动机 / Motivation

维护者遇到配额检查失败时,需要判断旧读取器究竟拒绝了哪一行。 上一版把已经能读的单条省略行算进了兼容性故障。修订后,共用前缀的两种指针各自对应可核对的读取行为。 复测中旧组件拒绝归档摘要,接受单条省略。当前源码和 wheel 都能读这两种指针。 这批兼容性证据来自隔离复现,实际安装升级沿用现有权限与原绑定读回。 实际宿主升级和完整运行成本仍待验证。

改动思路 / Approach

沿用现有故障索引,用错误码和标记区报错组合检索,读取器与投影沿用各自的实现。 以实际合并预检为准,净变化是两份 RFC 和一条故障指引。 精简输出可能只显示错误码,详细的只读状态可以核对异常类型和报错。源码与 wheel 的组合查询都将对应条目排在首位。条目要求核对生成行、读取器字节及加载来源,再判断是否匹配已知故障。 更新后的索引

具体改动 / Changes

两份附录和索引都说明了旧读取器对两种指针的实际处理。归档摘要缺少可识别的 Todo 元数据,因此会触发拒绝。单条省略包含有效 todo_id,原有元数据分支已经可以接受。附录分别交代了原先 36 例和新增 18 例的输入范围,索引也要求按实际组件和生成行验证故障。 英文附录 中文附录 省略行生成逻辑

对照 RFC 修订 ebb39f4 的 §5 / I8 和 §7,实测保留原 Turn 身份和外来内容拒绝。现有导入继续满足 I3 约定的路径。R0/V10 and R1 保留各自的验收条件。 规格

对主干的风险 / Risks

GitHub 的旧基点比较显示 16 个文件。对主干 8e86f17 执行 Git 合并预检,其中 13 个文件的内容都与主干一致。

用 Python 3.11 和 Node 24 在隔离的 File 和 SQLite 上独立验证。三类输入中的外来正文在各组合上始终被拒绝。原 Turn 可回读和重放,canonical 状态保持原值,扣费为零。83 项回归、双语检查和 premerge 通过。全量 Ruff 在基线和当前提交均报同一处 F841,严格 CQR 仍未通过。按策略未查 CI。

我的整体评价 / Verdict

这次修订把诊断落到了可复现的读取器版本和具体生成行上。复审认可这项文档修正。运行验收仍以实际安装中的读取和原绑定读回为据,合并资格由独立检查判定。

English verdict: APPROVE. The revised guidance distinguishes the rejected historical archive summary from the already accepted per-Todo omission row. The independently reproduced Ruff failure remains a separate strict merge hold.

@cocolord
cocolord dismissed loopx-agent’s stale review November 7, 2026 06:35

The merge-base changed after approval.

loopx-agent
loopx-agent previously approved these changes Nov 7, 2026

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent | gpt-6.1-sol | OpenAI | runtime_reported | reasoning_effort=max

Approve。上一轮 P2 已在当前头解决。独立验证支持这次诊断修正;必检 Ruff 的既有失败仍阻止严格质量门通过。

动机 / Motivation

操作员或评审者遇到安装端 quota collection 失败,需要判断应检查已部署 reader、核对生成行,还是处理外来叙述。 两种生成行共用前缀,笼统归因会把旧 reader 已能接受的单条省略误判为同一个归档摘要故障。 旧 reader 只拒绝归档摘要,单条 Todo 省略可解析;当前源码和隔离 wheel 接受两者,所有组成继续拒绝标记区内的外来叙述。 修正记录可避免重复修改已经上线的 reader,或因相同前缀清理本应保留的投影元数据。 已合入的 #7834

当前边界为成对的非规范性事故附录与一个按需查询的诊断词条。继续复用既有投影、reader、CLI 及升级授权。 完整 R0/V10、M1/#8011、R1、D2/D5/D6/D3 与既有 I3 退役边界仍按各自规格验收。

改动思路 / Approach

由现有 Todo 投影 owner 生成行,现有 reader 和 quota owner 做校验和准入,self-repair catalog 仅指向可证伪的诊断;保留单一事实来源。 当前边界为成对的非规范性事故附录与一个按需查询的诊断词条。继续复用既有投影、reader、CLI 及升级授权。 遇到薄输出只显示错误码时,用只读 quota status --verbose 确认标记区的具体错误。综合错误码与详细症状定位词条,核对实际安装路径、reader 字节和出错的生成行,再由既有升级流程处理。未知行型和未核验的安装版本仍不能据此归因。

具体改动 / Changes

精确评审头为 2bd00b02cdac73ee39f10b1abdcaec86cdd7a6df。GitHub 的基点 8231ee262ee4bf2bed8404214ac4ad580cdd257b 显示 16 个文件。对主干 c47d8e9083cd0c5ff50e6945292f5b40a8bcdcae 的合并预检确认共同祖先仍为 ebb39f4db088cc77927c4514d614476ad0a5c84e。#8185、#8184、#8182 的原提交已经在主干。合并结果的增量是两个 DCO 提交、三个文档路径、+94/-2,包含双语 RFC 附录和一条自修复指引。

按 docs/architecture/rfcs/monorepo-distribution-split-v0.md 在 ebb39f4db088cc77927c4514d614476ad0a5c84e 的 已接受规格 复核 I2、I3、I8、I9 与 §7,并对照总体路线图 S2、S10;这些是本次证据的边界,不代表退役或推广验收。

关键代码讲解

  • 双语附录的英文入口 把旧 reader 的归档摘要拒绝与单条省略可读拆开。旧 reader 的 metadata predicate 已识别有效 todo_id。
  • 归档摘要生成器 和 单条省略生成器 分别生成没有和带有可识别 Todo 元数据的两种行。标记区检查 的已上线修复允许生成的归档指针,仍拒绝普通叙述。
  • 诊断词条 通过现有词条查询定位证据,先要求精确复现与原绑定读回。源码和隔离 wheel 中的组合查询都将该词条排在首位。

对主干的风险 / Risks

两种真实 store、三种 reader/分发组成、四种行共 24 场景;16 次初始准入、8 次预期拒绝、2 次同 Turn 恢复,18 个 digest-bound 凭证读回及重放。 旧组件拒绝两条归档摘要,六个普通叙述负例均拒绝;六条单 Todo 省略和六个普通有效输入均通过。成功的 guard 通过自身给出的 native reader 读回绑定;重放保持同一 event。失败后使用当前源码恢复原 Turn,源文件与 canonical work 均未改变,quota 扣费为零。这里对照的是历史精确 reader 组件与当前依赖、当前源码及隔离单体 wheel,不等同于旧整包或生产安装验证。

语义与 CI 对齐

33 项相关回归、四个直接及四个选定 premerge 检查通过,包括双语检查。全量必检 Ruff 在基线和当前头都只报同一未改文件的 F841(tests/control_plane/test_goal_create_completion.py:184)。严格质量凭证 cqr_cd922cdc814b1e010ab2 记录失败;托管 CI 未查询。未独立验证活跃安装宿主的升级与原绑定读回、进程退出、拆包、托管 CI、完整长程收益和成本。

我的整体评价 / Verdict

这次诊断说明通过评审。上一轮要求区分归档摘要和单条省略的 P2 已按当前提交、实际生成行和双后端负例复核。当前边界为成对的非规范性事故附录与一个按需查询的诊断词条。继续复用既有投影、reader、CLI 及升级授权。 完整 R0/V10、M1/#8011、R1、D2/D5/D6/D3 与既有 I3 退役边界仍按各自规格验收。 严格质量门仍待清除。

English verdict: APPROVE — The exact head correctly distinguishes archive-summary rejection from per-Todo omission acceptance and preserves foreign-content rejection and original-Turn recovery. The unchanged required Ruff failure remains an integration hold.

@cocolord
cocolord dismissed loopx-agent’s stale review November 7, 2026 08:00

The merge-base changed after approval.

@mergify

mergify Bot commented Nov 7, 2026

Copy link
Copy Markdown

This pull request has merge conflicts with main and cannot be merged
until they are resolved. Please rebase or merge the base branch, @cocolord.

Choose the remote for the base repository, not an out-of-date fork.
For a fork clone, first inspect git remote -v; upstream must point
to https://github.com/loopx-project/loopx.git. If it is absent, add it
with git remote add upstream https://github.com/loopx-project/loopx.git.
Then run:

git fetch upstream
git rebase upstream/main
# Resolve each conflict, git add the resolved files, then git rebase --continue.
git push --force-with-lease origin HEAD

For a same-repository clone whose origin points to
https://github.com/loopx-project/loopx.git, use origin instead of
upstream for fetch/rebase. If you prefer merging the base, use
git merge <base-remote>/main and push normally.

Keep the DCO Signed-off-by trailer on every commit when you rebase.
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork

@mergify mergify Bot added needs-rebase Mergify: the pull request has merge conflicts with its base branch and removed needs-rebase Mergify: the pull request has merge conflicts with its base branch labels Nov 7, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants